public class Test1 {
////    2023-04-16_方法的创建和调用等_作业
////1.使用函数求最大值
////    创建方法求两个数的最大值max2，随后再写一个求3个数的最大值的函数max3。
//// 要求：在max3这个函数中，调用max2函数，来实现3个数的最大值计算
//    public static int max2(int a, int b){
//        return a>b?a:b;
//    }
//    public static int max3(int a, int b, int c){
//        int max = max2(a,b);
//        return max2(max,c);
//    }
//
//    public static void main(String[] args) {
//        System.out.println(max3(1,9,6));
//    }



//    2.求 N 的阶乘  。
    public static int fac(int n){
        if(n == 1)
            return 1;
        return n*fac(n-1);
    }

    public static void main2(String[] args) {
        System.out.println(fac(5));
    }


//    求1！+2！+3！+4！+........+n!的和
    public static int sumfac(int n){
        int ret = 0;
        for (int i = 1; i <=n; i++) {
            ret+=fac(i);
        }
        return ret;
    }

    public static void main(String[] args) {
        System.out.println(sumfac(4));
    }


//    4.求斐波那契数列的第n项。(迭代实现)
public static int fib(int n){
        int f1 = 1;
        int f2 = 1;
        int ret = 1;
    for (int i = 3; i <=n; i++) {
        ret = f1+f2;
        f1 = f2;
        f2 = ret;
    }
    return ret;
}


    public static void main4(String[] args) {
        System.out.println(fib(10));
    }



//5.求和的重载
// 在同一个类中,分别定义求两个整数的方法 和 三个小数之和的方法。 并执行代码，求出结果
    public static int add(int a,int b){
            return a+b;
    }
    public static int add(int a,int b,int c){
            return a+b+c;
    }

    public static void main5(String[] args) {
        System.out.println(add(5,5));
        System.out.println(add(5,5,5));
    }



////    6.求最大值方法的重载
////    在同一个类中定义多个方法：要求不仅可以求2个整数的最大值，还可以求3个小数的最大值？
//    public static int max(int a,int b){
//        return a>b?a:b;
//    }
//    public static int max(int a,int b,int c){
//        int temp = max(a,b);
//        return max(temp,c);
//    }
//
//    public static void main(String[] args) {
//        System.out.println(max(5,6,2));
//    }

}
